package ensa.sid.rida.SID;
import java.awt.BorderLayout;
import java.awt.Desktop;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.border.EmptyBorder;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import ensa.sid.rida.SID.utile.ConnexionBD;
import ensa.sid.rida.SID.utile.ZModel;

public class ExecuterApplication extends JFrame implements Runnable {

	
	
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private JTextField textField;
	JProgressBar progressBar;
	String styl="javax.swing.plaf.metal.MetalLookAndFeel";
	JLabel LabelChemin;
	JButton btnParcourir;
	JButton btnRecherche;
	JLabel LabelRemarque;
	ZModel model;
	JLabel etat;
	int value;
	int nombre_auteur = 0;
	int nombre_pays = 0;
	int nombre_organisme = 0;
	int nombre_motCle = 0;

	public ExecuterApplication() {
		LabelChemin = new JLabel("Chemin du fichier :");
		btnParcourir = new JButton("Parcourir");
		btnRecherche = new JButton("Rechercher");
		LabelRemarque = new JLabel("(NB : fichier.txt)");
		contentPane = new JPanel();

		setTitle("Moteur de Recherche sur USPTO");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(250, 200, 677, 409);
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);

		LabelChemin.setBounds(90, 44, 109, 14);
		contentPane.add(LabelChemin);

		textField = new JTextField();
		textField.setBounds(224, 41, 206, 20);
		contentPane.add(textField);
		textField.setColumns(10);

		btnParcourir.setBounds(440, 40, 89, 23);
		contentPane.add(btnParcourir);

		btnRecherche.setBounds(440, 90, 127, 23);
		contentPane.add(btnRecherche);

		LabelRemarque.setBounds(224, 72, 121, 14);
		contentPane.add(LabelRemarque);

		progressBar = new JProgressBar(0, 100);
		progressBar.setBounds(179, 144, 313, 20);
		progressBar.setValue(0);
		progressBar.setStringPainted(true);
		contentPane.add(progressBar);

		Object[][] donnees = { { 0, 0, 0, 0 } };
		String[] entetes = { "Auteurs", "Pays", "Organisme", "Mot Clé" };

		model = new ZModel(donnees, entetes);

		JTable tableau = new JTable(model);
		tableau.setFont(new Font("Tahoma", Font.BOLD, 11));
		tableau.setEnabled(false);
		tableau.setShowHorizontalLines(false);
		tableau.setRowSelectionAllowed(false);
		tableau.setShowGrid(false);
		tableau.setShowVerticalLines(false);

		JPanel panel = new JPanel();
		panel.setBounds(110, 258, 456, 66);

		tableau.getTableHeader().setResizingAllowed(false);
		tableau.getTableHeader().setReorderingAllowed(false);
		tableau.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

		contentPane.add(panel);
		panel.add(tableau.getTableHeader());
		panel.add(tableau, BorderLayout.CENTER);

		etat = new JLabel("www.uspto.gov");
		etat.setBounds(189, 175, 241, 14);
		contentPane.add(etat);

		JMenuBar menuBar = new JMenuBar();
		JMenu test1 = new JMenu("Fichier");
		JMenu test4 = new JMenu("Edition");
		JMenu test2 = new JMenu("Help");
		JMenu test3 = new JMenu("A propos");

		menuBar.add(test1);
		menuBar.add(test4);
		menuBar.add(test2);
		menuBar.add(test3);

		JMenuItem item1 = new JMenuItem("Fermer");
		JMenuItem item2 = new JMenuItem("?");
		JMenuItem item3 = new JMenuItem("Exemple fichier txt");
		JMenuItem item4 = new JMenuItem("Guide d'utilisation");
		JMenuItem item8 = new JMenuItem("Style->Liquid");
		JMenuItem item7 = new JMenuItem("Style->Standard");
		JMenuItem item5 = new JMenuItem("Style->Windows");
		JMenuItem item6 = new JMenuItem("Style->Motif");

		item2.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				JOptionPane.showMessageDialog(null,
						"Réalisé par : Rida Rechrache 2013/2014", "A propos",
						JOptionPane.INFORMATION_MESSAGE);
			}
		});

		test1.add(item1);
		test3.add(item2);
		test2.add(item3);
		test2.add(item4);
		test4.add(item8);
		test4.add(item7);
		test4.add(item5);
		test4.add(item6);
	

		
		item8.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				 style_windows(arg0);

			}

			private void style_windows(ActionEvent arg0) {
			styl="com.birosoft.liquid.LiquidLookAndFeel";
		        style_fenetre();
				
			}

			
		});
		
		item7.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				 style_windows(arg0);

			}

			private void style_windows(ActionEvent arg0) {
			styl="javax.swing.plaf.metal.MetalLookAndFeel";
		        style_fenetre();
				
			}

			
		});
		
		item5.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				 style_windows(arg0);

			}

			private void style_windows(ActionEvent arg0) {
			styl="com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
		        style_fenetre();
				
			}

			
		});
		
		item6.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				 style_windows(arg0);

			}

			private void style_windows(ActionEvent arg0) {
			styl="com.sun.java.swing.plaf.motif.MotifLookAndFeel";
		        style_fenetre();
				
			}

			
		});
		
		
		item1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				System.exit(0);

			}
		});
		item3.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				Desktop desktop = Desktop.getDesktop();
				if (desktop.isSupported(Desktop.Action.BROWSE)) {
					try {
						desktop.open(new File("Fichier-Liens.txt"));
					} catch (Exception e) {
						e.printStackTrace();
					}
				}

			}
		});
		menuBar.setBounds(0, 0, 661, 21);
		contentPane.add(menuBar);

		btnParcourir.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {

				JFileChooser ChoixFichierVel = new JFileChooser();
				ChoixFichierVel.setDialogTitle("Entrer un Fichier");
				ChoixFichierVel.setFileSelectionMode(JFileChooser.FILES_ONLY);// fichiers
																				// seulement
				ChoixFichierVel.setAcceptAllFileFilterUsed(false);// ne pas
																	// mettre de
																	// filtre de
																	// fichier
				ChoixFichierVel.setApproveButtonText("Ouvrir fichier"); // intitule
																		// du
																		// bouton

				if (ChoixFichierVel.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
					textField.setText("");
					int index = -1;
					String MonFichierVel = (ChoixFichierVel.getSelectedFile()
							.getName() != null) ? ((index = ChoixFichierVel
							.getSelectedFile().getName().lastIndexOf(".")) == -1) ? ChoixFichierVel
							.getSelectedFile().getName() : ChoixFichierVel
							.getSelectedFile().getAbsolutePath()
							: "";

					textField.setText(MonFichierVel);
				}
			}
		});

		btnRecherche.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {

				if (textField.getText().equals(""))

					JOptionPane.showMessageDialog(null,
							"Séléctionner un fichier.txt SVP..!!!");

				else {

					// ///////////////////////////////////////////////////////////////////////////////////////////////////
					try {

						InetAddress address = InetAddress
								.getByName("www.uspto.gov");

						if (address != null) {

							btnRecherche.setEnabled(false);

							btnParcourir.setEnabled(false);

							value = 0;
							String str = "<html>" + "<font color=\"#008000\">"
									+ "<b>" + "searching is in process......."
									+ "</b>" + "</font>" + "</html>";
							etat.setText(str);
							lanceLongTraitement();
						}
					} catch (IOException erreurConnexion) {
						// TODO Auto-generated catch block
						JOptionPane.showMessageDialog(null,
								"Pas de connexion internet...!!!");

					}

					// ///////////////////////////////////////////////////////////////////////////////////////////////////

				}
			}
		});

	}

	public void lanceLongTraitement() {
		Thread t = new Thread(this);
		t.start();
		// maintenant nous rendons la main au processus d'evenement
	}

	// methode de l'interface Runnable
	// lance un nouveau thread qui va executer le code de la methode
	// longTraitement
	public void run() {
		this.longTraitement();
	}

	public void longTraitement() { // execute la succession d'operation ...
									// on est plus dans le processus d'evenement
									// mais dans le nouveau Thread

		Thread th = new Thread() {
			public void run() {
				String fichier = textField.getText();
				lectureFichier(fichier);

			}
		};
		th.start();

		for (int i = 0; i < 100; i++) {

			this.uneOperation();
			// maintenant on appelle la methode pour mettre a jour la barre
			// de progression
			this.majProgress();

		}
	}

	// methode qui effectue une pause pour simuler une operation
	synchronized void uneOperation() {
		try {
			this.wait(100);

		} catch (InterruptedException e) {
		}
	}

	void majProgress() {
		if (SwingUtilities.isEventDispatchThread()) {
			progressBar.setValue(++value);

			if (value == 100) {
				btnRecherche.setEnabled(true);
				btnParcourir.setEnabled(true);
				textField.setText("");
				// pb.setValue(0);
				int c1 = nombre_auteur;
				int c2 = nombre_pays;
				int c3 = nombre_organisme;
				int c4 = nombre_motCle;

				final Object[][] dataBis = { { c1, c2, c3, c4 } };
				model.setData(dataBis);

				nombre_auteur = 0;
				nombre_pays = 0;
				nombre_organisme = 0;
				nombre_motCle = 0;

				String str = "<html>" + "<font color=\"#FF0000\">" + "<b>"
						+ "searching completed." + "</b>" + "</font>"
						+ "</html>";
				etat.setText(str);
			}

		} else {
			Runnable callMAJ = new Runnable() {
				public void run() {
					majProgress();

				}
			};

			SwingUtilities.invokeLater(callMAJ);
		}
	}

	void lectureFichier(String fichier) {

		Document doc;
		try {
			InputStream ips = new FileInputStream(fichier);
			InputStreamReader ipsr = new InputStreamReader(ips);
			BufferedReader br = new BufferedReader(ipsr);
			String ligne;

			List<String> lisConjonction = new ArrayList<String>();
			lisConjonction.add("and");
			lisConjonction.add("if");
			lisConjonction.add("as");
			lisConjonction.add("that");
			lisConjonction.add("else");
			lisConjonction.add("of");
			lisConjonction.add("the");
			lisConjonction.add("in");
			lisConjonction.add("for");
			int sizeOfTheShortestList = lisConjonction.size();
			int nombre_brevet = 0;
			List<String> listCodePays = new ArrayList<String>();
			ConnexionBD c = new ConnexionBD();

			// LineNumberReader l = new LineNumberReader(
			// new BufferedReader(new InputStreamReader(ips)));
			// while ((ligne=l.readLine())!=null)
			// {
			// nombre_lien = l.getLineNumber();
			// }
			// // System.out.println(nombre_lien);

			while ((ligne = br.readLine()) != null) {

				doc = Jsoup.connect(ligne).get();
				nombre_brevet++;

				System.out
						.println("----------------------------------------------brevet N°"
								+ nombre_brevet
								+ "------------------------------------------------");

				//Titre de brevet
				// /////////////////////////////////////////
				Elements motCle = doc.select("body>font");
				StringBuffer strMotCle = new StringBuffer(motCle.text());
				
				Elements select_dateBrevet = doc.select("body>table>tbody");
				Element ele1=select_dateBrevet.select("tr").get(3);
				Element ele2=ele1.select("td").get(1);
				
				String mois=ele2.text().substring(0,ele2.text().indexOf(" ")).trim();
				String jour=ele2.text().substring(ele2.text().indexOf(" "), ele2.text().indexOf(",")).trim();
				String annee=ele2.text().substring(ele2.text().length()-4, ele2.text().length()).trim();
				String[] tabMois={"January","February"," March","April","May","June","July","August","September","October","November","December"};
				 
				String[] tabS={"1","2","3","4","5","6","7","8","9","10","11","12"};
				int moisChiffre = 0;
				for(int i=0;i<tabMois.length;i++){
			 
					 if(tabMois[i].equals(mois)) // System.out.println("date brevet :"+(i+1));
						 moisChiffre=i+1;

				
				}

				
				String dateBrevet=annee+"-"+moisChiffre+"-"+jour; 
			System.out.println("date publication de brevet :"+dateBrevet);
				String sMotCle = (strMotCle + " ").toLowerCase();
				System.out.println("->Titre :" + sMotCle);
				
				String reqTestTable1="select * from brevet";
				boolean l1=c.testTableVide(reqTestTable1);
		
				String reqTitre;
				
				if(l1==false){
					System.out.println("table vide");
					 reqTitre = "INSERT INTO brevet(titre,date) value('"+sMotCle+"','"+dateBrevet+"')";
					c.ajouter(reqTitre);
				}
				else
				{
					System.out.println("table pas vide");
					 reqTitre = "INSERT INTO brevet(titre,date) SELECT '"+sMotCle+"','"+dateBrevet+"' " +
							" FROM brevet WHERE NOT EXISTS(SELECT titre,date FROM brevet WHERE titre='"+sMotCle+"' and date='"+dateBrevet+"' ) limit 1";
					c.ajouter(reqTitre);
					
				}
			
				
				 
				String requet_id_bre="select * from brevet where titre='"+sMotCle+"' and date='"+dateBrevet+"'";
			 
				int id_bre=c.findById(requet_id_bre);
				
				System.out.println("id motClé "+id_bre);
				
				Pattern patternMotCle = Pattern.compile("(.*?) ");
				Matcher mMotCle = patternMotCle.matcher(sMotCle);
				while (mMotCle.find()) {

					if (!lisConjonction.contains(mMotCle.group(1))) {
						System.out.println("             mot cle :"
								+ mMotCle.group(1));
						
						String reqTestTable2="select * from motcle";
						boolean l2=c.testTableVide(reqTestTable2);
						String reqMotCle;
						
						if(l2==false){
							 reqMotCle = "insert into motcle(contenu) value('"+mMotCle.group(1)+"')";
							 c.ajouter(reqMotCle);
						}
						else{
							reqMotCle = "insert into motcle(contenu)  SELECT '"+mMotCle.group(1)+"'  FROM motcle " +
									"WHERE NOT EXISTS(SELECT contenu FROM motcle WHERE contenu='"+mMotCle.group(1)+"' ) limit 1";
							 c.ajouter(reqMotCle);
						}
						
						
						String requete_id_mc="select * from motcle where contenu='"+mMotCle.group(1)+"' ";
						 int id_mc=c.findById(requete_id_mc);
						 
							String reqTestTable3="select * from contenir";
							boolean l3=c.testTableVide(reqTestTable3);
							String reqContenir;
							if(l3==false){
								 reqContenir="insert into contenir(id_bre,id_mc) value("+id_bre+","+id_mc+")";
									 c.ajouter(reqContenir);
							}
							else{
								 reqContenir="insert into contenir(id_bre,id_mc) select "+id_bre+","+id_mc+"  FROM contenir " +
									 		"WHERE NOT EXISTS(SELECT id_bre,id_mc FROM contenir WHERE id_bre="+id_bre+" and id_mc="+id_mc+" ) limit 1 ";
							//	System.out.println("okkkkkkk");	
								 c.ajouter(reqContenir);
							}
						
						 
						nombre_motCle++;
					}
				}

				// ////////////////////////////////////				
				
				
//les auteurs et les pays 				
				Element Inventors = doc.select("td:contains(Inventors:) + td")
						.first();

				
	     
				
				List<Integer> listIdPays = new ArrayList<Integer>();
				
				//nombre_pays = listCodePays..size();
				
				List<String> v = new ArrayList<String>();
				
				  for(int i=0;i<listCodePays.size();i++) {
				      
					    
					     if(!v.contains(listCodePays.get(i)))
					     {
					      v.add(listCodePays.get(i));
					     }       
					     
					  } 
				
				  nombre_pays = v.size();
				int requete_id_pays1;
				
				List<String> listNom=new ArrayList<String>();
				List<String> listPrenom=new ArrayList<String>();
				
				 
				System.out.println("->Auteurs :" + Inventors.text());

				for (Element link : Inventors.children()) {
					Elements auteur = link.select("b");
					Elements pays = link.select("i");

					if (!pays.text().equals("")) {

						String extrairePays = pays.text().substring(
								pays.text().indexOf(",") + 1,
								pays.text().length() - 1);
						String enleverEspace = extrairePays.trim();

					

							listCodePays.add(enleverEspace);
							
				

					}

					if (!auteur.text().equals("")) {

						String enleverPointVirgule = auteur.text().replaceAll(
								";", "");
						String structure = enleverPointVirgule.trim();
						String prenom = structure.substring(0,
								structure.indexOf(" "));
						String nom = structure.substring(
								structure.indexOf(" ") + 1, structure.length());
					System.out.println("                  prenom :"+prenom+"  nom:"+nom);
					
					listNom.add(nom);
					listPrenom.add(prenom);
					
					nombre_auteur++;
					}
					
				}
					
					
					
					String reqTestTable6="select * from inventeur";
					boolean l6=c.testTableVide(reqTestTable6);
					String req_inventeur;
					

					   Iterator<String> i1 = listCodePays.iterator();
						 Iterator<String> i2 = listNom.iterator();
						 Iterator<String> i3 = listPrenom.iterator();
					while (i2.hasNext()) {
						String code1=i1.next();
						String nom1 = i2.next();
						String prenom1 = i3.next();
						
						System.out.println(" Pays :" + code1);
						requete_id_pays1=c.findById("select id_pay  from pays where code='"+code1+"' ");
						
						
						
						
					if(l6==false){
						req_inventeur="INSERT INTO inventeur(id_pay,nom,prenom) value("+requete_id_pays1+",'"+nom1+"','"+prenom1+"')";
						c.ajouter(req_inventeur);
					}
					else{
						
						req_inventeur="INSERT INTO inventeur(id_pay,nom,prenom) SELECT "+requete_id_pays1+",'"+nom1+"','"+prenom1+"'  FROM inventeur " +
								"WHERE NOT EXISTS(SELECT id_pay,nom,prenom FROM inventeur" +
								" WHERE prenom='"+prenom1+"' and nom='"+nom1+"' and id_pay="+requete_id_pays1+") limit 1";
						c.ajouter(req_inventeur);	
						
					}
					
					
					int id_inventeur=c.findById("select id_inv  from inventeur where nom='"+nom1+"' and prenom='"+prenom1+"' and id_pay="+requete_id_pays1+"");
					String reqTestTable7="select * from realiser";
					boolean l7=c.testTableVide(reqTestTable7);
					String req_realiser;
					
					
			 

					if(l7==false){
						req_realiser="insert into realiser(id_bre,id_inv) value("+id_bre+","+id_inventeur+")";
						c.ajouter(req_realiser);
					}
					else{
						req_realiser="insert into realiser(id_bre,id_inv) select "+id_bre+","+id_inventeur+"  " +
								"FROM realiser WHERE NOT EXISTS(SELECT id_bre,id_inv FROM realiser WHERE id_bre="+id_bre+" and id_inv="+id_inventeur+"   ) limit 1 ";
						c.ajouter(req_realiser);
					}
					
						

						
					
				}

			
				
			 

				
//l'organisme de brevet 
				/**********************************************/
				Elements Assignee = doc.select("td:contains(Assignee:) + td").select("b");
				List<String> listOrg=new ArrayList<String>();
				List<String> listPaysOrg=new ArrayList<String>();
				//Elements organismeLien = Assignee.select("b");
				
			//	System.out.println("->organisme :" + Assignee.text());
				int index;
				for (index=0;index<Assignee.size();index=index+3)
				{
					System.out.println("->organisme :" + Assignee.get(index).text());
					listOrg.add(Assignee.get(index).text());
		
					if(Assignee.get(index+2).text().length()==2)
					{
					  listPaysOrg.add(Assignee.get(index+2).text());
					
					 System.out.println("            pays :" +Assignee.get(index+2).text());
					}
				
				}
				nombre_organisme=nombre_organisme+listOrg.size();
				Iterator<String> i4 = listOrg.iterator();
				Iterator<String> i5 = listPaysOrg.iterator();
				int	id_Pays;
				while (i4.hasNext()) {
					String org=i4.next();
					String code2=i5.next();
		
			 	id_Pays=c.findById("select id_pay  from pays where code='"+code2+"' ");
					
				
			   
				String reqTestTable4="select * from organisme where libelle='"+org+"' and  id_pay="+id_Pays+"";
				boolean l4=c.testTableVide(reqTestTable4);
				String reqAssignee;
				if(l4==false){
					reqAssignee="insert into organisme(id_pay,libelle) value("+id_Pays+",'"+org+"')";
					 c.ajouter(reqAssignee);
				}
				else{
					reqAssignee="insert into organisme(id_pay,libelle) SELECT "+id_Pays+" ,'"+org+"' FROM organisme " +
							"WHERE NOT EXISTS(SELECT id_pay,libelle FROM organisme WHERE  id_pay="+id_Pays+" and libelle='"+org+"') limit 1";
				
					 c.ajouter(reqAssignee);	 
				}
			
			
				
				String reqTestTable5="select * from concerner";
				boolean l5=c.testTableVide(reqTestTable5);
				String req_concerner;
				int id_org=c.findById("select id_org from organisme where libelle='"+org+"' and  id_pay="+id_Pays+"");
				if(l5==false)
				{
					
					req_concerner="insert into concerner(id_bre,id_org) value("+id_bre+","+id_org+")";
					c.ajouter(req_concerner);
					 
				}
				
				else {
					
					req_concerner="insert into concerner(id_bre,id_org) select "+id_bre+","+id_org+"  FROM " +
							"concerner WHERE NOT EXISTS(SELECT id_bre,id_org FROM concerner WHERE" +
							" id_bre="+id_bre+" and id_org="+id_org+"  ) limit 1 ";
					
					c.ajouter(req_concerner);
				
					
					
				}
				
				
				}

			}

			br.close();
			c.fermer();
			System.out
					.println("-------------------------------------------------------------------------------------------------------------");

			System.out.println("Nombre d'auteur dans ce fichier :"
					+ nombre_auteur);
			System.out
					.println("Nombre de pays dans ce fichier :" + nombre_pays);
			System.out.println("Nombre d'organisme dans ce fichier :"
					+ nombre_organisme);
			System.out.println("Nombre de mot clé dans ce fichier :"
					+ nombre_motCle);
		} catch (Exception e) {
			System.out.println(e.toString());
		}

	}

	
	
	
	private void style_fenetre() {
		  try{
			     // UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); dimunie largeur d'ecriture ds fenetre
			  // UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
			   // "com.birosoft.liquid.LiquidLookAndFeel"
			
			  UIManager.setLookAndFeel(styl);
			
			      SwingUtilities.updateComponentTreeUI(this);
			  }
			  catch(Exception erreur)
			  {
			  
			  JOptionPane.showMessageDialog(null, erreur);
			  }
		
	}
	
	public static void main(String[] args) {
	
	    
	    
		EventQueue.invokeLater(new Runnable() {
			public void run() {

				try {

					ExecuterApplication frame = new ExecuterApplication();
				
					frame.setVisible(true);

				} catch (Exception e) {
					e.printStackTrace();
				}

			}
		});
	}
}
